﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DslamPort.Models;
using System.IO;
using System.Data.OleDb;
using System.Data;

namespace DslamPort.Controllers
{

    [Authorize(Roles = "admin")]
    public class DslamController : Controller
    {
        //
        // GET: /Dslam/


        DslamModel DslamModel = new DslamModel();
        DonviModel DonviModel = new DonviModel();
        public ActionResult Index()
        {
            List<DslamModel> dslam = DslamModel.getDslam(1,"ORDER BY c.quan_huyen_id,a.name");
            ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            return View(dslam);
        }
        public ActionResult AddDslam()
        {
            ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            Dslam_TypeModel Dslam_TypeModel = new Dslam_TypeModel();
            ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");
            return View();
        }
        [HttpPost]
        public ActionResult AddDslam(DslamModel Dslam)
        {
            Dslam_TypeModel Dslam_TypeModel = new Dslam_TypeModel();
            if (ModelState.IsValid)
            {
                if (DslamModel.checkExist(Dslam) > 0)
                {
                    TempData["msg"] = "Tên hoặc mã Dslam đã tồn tại!";
                    ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
                    ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");
                    return View();
                }
                if (DslamModel.KiemTraHopLeSlot(Dslam))
                {
                    DslamModel.status = Request["status"];
                DslamModel.addDslam(Dslam,1);
                TempData["msg"] = "Thông tin mới đã được cập nhật thành công!";
                return RedirectToAction("Index");
                }
                TempData["msg"] = "Slot và loại dslam Không hợp lệ cho lắm";
                ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
                ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");
                return View();
            }
            TempData["msg"] = "Bạn đã nhập sai thông tin!";
            ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");
            return View();
        }
        public ActionResult EditDslam(int id)
        {
            DslamModel dslam = DslamModel.getDslam(1).Find(delegate(DslamModel s) { return Convert.ToInt32(s.id) == id; });

            ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            ViewBag.xa_phuong_id_ = new SelectList(DonviModel.getKhuvuc(), "xa_phuong_id", "ten_xp");
            ViewBag.todanpho = new SelectList(DonviModel.getTodanpho(), "todanpho_id", "ten_tdp");
            Dslam_TypeModel Dslam_TypeModel = new Dslam_TypeModel();
            ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");
            ViewBag.slot = dslam.slot_dslam;
            return View(dslam);
        }
        [HttpPost]
        public ActionResult EditDslam(DslamModel Dslam)
        {
            if (ModelState.IsValid)
            {
                DslamModel.status = Request["status"];

                string a = ViewBag.slot;

                DslamModel.updateDslam(Dslam);
                
                TempData["msg"] = "Thông tin mới đã được cập nhật thành công!";
                return RedirectToAction("Index");
            }
            TempData["msg"] = "Bạn đã nhập sai thông tin!";
            ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            Dslam_TypeModel Dslam_TypeModel = new Dslam_TypeModel();
            ViewBag.dslam_type = new SelectList(Dslam_TypeModel.getDslam_Type(), "id", "name");

            return View(Dslam);
        }


        public ActionResult DeleteDslam(int id)
        {
            //if (DslamModel.checkporttrong(id) > 0)
            //{
               
            //    TempData["error"] = "Dslam này đang có port sử dụng bạn không thể xóa ";
            //    return RedirectToAction("Index");
            //}
            //else
            //{
               
                DslamModel dslam = DslamModel.getDslam(1).Find(delegate(DslamModel s) { return Convert.ToInt32(s.id) == id; });
                DslamPortModel.delete(dslam.system_id);
                DslamModel.delete(id);
                List<DslamModel> u = DslamModel.getDslam(1);
                TempData["msg"] = "Xóa dslam thành công!";
                return RedirectToAction("Index");
            //}
        }
        public ActionResult FindDslam()
        {
            return RedirectToAction("Index");
        }
        [HttpPost]
        public ActionResult FindDslam(string timkiem)
        {
            string quan_huyen_id = "";
            int num;
            bool quan_huyen_id_check = int.TryParse(quan_huyen_id, out num);
            string s = "";
            ViewBag.selectedDonvi = "";
            if (int.TryParse(Request.Form["quan_huyen_id"], out num))
            {
                quan_huyen_id = Request.Form["quan_huyen_id"];
                s = " c.quan_huyen_id=" + quan_huyen_id + " and ";
                ViewBag.selectedDonvi = Request.Form["quan_huyen_id"];
            }
            //if (int.TryParse(Request.Form["stations_id"], out num))
            //{
            //    tram_id = Request.Form["stations_id"];
            //    s = " b.id=" + tram_id + " AND ";
            //    ViewBag.selectedStations = Request.Form["stations_id"];
            //}
            //if (int.TryParse(Request.Form["main_stations_id"], out num) && int.TryParse(Request.Form["stations_id"], out num))
            //    s = " d.id=" + trungtam_id + " AND b.id=" + tram_id + " AND ";
            //if (Session != null && s.ToString() == "")
            //{
            //    int quyen_id = Convert.ToInt16(Session["quyen_id"]);
            //    int trungtam_session_id = Convert.ToInt16(Session["trungtam_id"]);
            //    if (quyen_id > 2)
            //        s = " d.id=" + trungtam_session_id + " AND ";
            //}
            string sql;
            string dk = "";
            if (Request["select_option"] == "dslam.system_id")
                dk = "a.system_id";

            if (timkiem == "")
                sql = "and " + s + "(" + dk + " like '%" + timkiem + "%' or " + dk + " is null)";
            else
                sql = "and " + s + "(" + dk + " like '%" + timkiem + "%' or upper(" + dk + ") like upper('%" + timkiem + "%'))";

            ViewBag.find_textbox = timkiem;
            ViewBag.find_selectbox = Request["select_option"];
            List<DslamModel> dslam = DslamModel.getDslam(1,sql);

            if (ViewBag.selectedDonvi.Length == 0)
                ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh");
            else
            {
                ViewBag.donvi = new SelectList(DonviModel.getDonvi(), "quan_huyen_id", "ten_qh", ViewBag.selectedDonvi);
                //List<StationsModel> stationModel = StationsModel.getStationsByMain_Stations(Convert.ToInt32(ViewBag.selectedMain_stations));
                //ViewBag.tram_id = new SelectList(stationModel, "id", "name", ViewBag.selectedStations);
            }
            return View("Index", dslam);
        }

        [HttpPost]
        public JsonResult getDslamJson(string quan_huyen_id, string Order)
        {
            return Json(DslamModel.getDslamJson(quan_huyen_id,1, Order));
        }

        [HttpPost]
        public JsonResult getkhuvucJson(string quan_huyen_id)
        {
            return Json(DslamModel.getkhuvucJson(quan_huyen_id));
        }
        [HttpPost]
        public JsonResult getToDanPhoJson(string khuvuc_id)
        {
            return Json(DslamModel.getToDanPhoJson(khuvuc_id));
        }


        //=======================the==============================//
        public ActionResult DongBoDslam()
        {

            return View();
        }
        [HttpPost]
        public ActionResult DongBoDslam(HttpPostedFileBase file)
        {

            TempData["msg"] = "upload Thành công";
            return View();
        }

        ///////////////////////////////////////////////////////////////////////////////////////////////////

        Dslam_API_Class Dslam_API_Class = new Dslam_API_Class();
        public ActionResult GetDungluong(int id)
        {
            DslamModel dslam = DslamModel.getDslam(1).Find(delegate(DslamModel s) { return Convert.ToInt32(s.id) == id; });
            if (dslam.dslam_type_id == "2")
            {
                List<Dslam_API_Class.Dslam_Obj> Dslam_Obj = Dslam_API_Class.show_Profile_miniDslam(dslam.ip);
                DslamModel.updateDungluong(Dslam_Obj, dslam.system_id);
                TempData["msg"] = "Lấy dung lượng cổng DSLAM thành công!";
            }
            else if (dslam.dslam_type_id == "1")
            {
                List<Dslam_API_Class.Dslam_Obj> Dslam_Obj = Dslam_API_Class.show_Profile_ipDslam(dslam.ip);
                if (Dslam_Obj == null)
                {
                    TempData["error"] = "DSLAM đã được truy cập bạn hãy thử lại sau hoặc có thể do lỗi không xác định!";
                }
                else
                {
                    DslamModel.updateDungluong(Dslam_Obj, dslam.system_id);
                    TempData["msg"] = "Lấy dung lượng cổng DSLAM thành công!";
                }
            }
            return RedirectToAction("index");
        }
    }
}
